【CodeDeploy】Lambdaデプロイ設定の違いまとめ
こんにちは、AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
DevOps Professional試験勉強中でつまずいたLambdaのデプロイ設定についてまとめてみました。
はじめに
以下の記事をもとに記載していきます。
Deployment configurations on an AWS Lambda compute platform
さっそくまとめ
Lambda関数の新バージョントラフィック移行率をデフォルトのデプロイ設定ごとに表にまとめてみました。
新バージョントラフィック移行の流れ(30分間)
※分数は、「後」とする。例:5分→5分後
名前 | 直後 | 5分 | 10分 | 15分 | 20分 | 25分 | 30分 |
---|---|---|---|---|---|---|---|
CodeDeployDefault.LambdaCanary10Percent5Minutes | 10% | 100% | 100% | 100% | 100% | 100% | 100% |
CodeDeployDefault.LambdaCanary10Percent10Minutes | 10% | 10% | 100% | 100% | 100% | 100% | 100% |
CodeDeployDefault.LambdaCanary10Percent15Minutes | 10% | 10% | 10% | 100% | 100% | 100% | 100% |
CodeDeployDefault.LambdaCanary10Percent30Minutes | 10% | 10% | 10% | 10% | 10% | 10% | 100% |
CodeDeployDefault.LambdaLinear10PercentEvery1Minute | 10% | 60% | 100% | 100% | 100% | 100% | 100% |
CodeDeployDefault.LambdaLinear10PercentEvery2Minutes | 10% | 30% | 70% | 100% | 100% | 100% | 100% |
CodeDeployDefault.LambdaLinear10PercentEvery3Minutes | 10% | 20% | 40% | 60% | 70% | 90% | 100% |
CodeDeployDefault.LambdaLinear10PercentEvery10Minutes | 10% | 10% | 20% | 20% | 30% | 30% | 40% |
CodeDeployDefault.LambdaAllAtOnce | 100% | 100% | 100% | 100% | 100% | 100% | 100% |
Canaryデプロイ設定とは
公式ドキュメント
Canary: トラフィックは 2 回の増分で移行されます。残りのトラフィックが 2 回目の増分で移行される前に、最初の増分および間隔で更新された Lambda 関数のバージョンに移行されるトラフィックの割合 (%) を分単位で指定する、事前定義された Canary オプションから選択できます。
- パーセントと時間を指定する方式
- 指定したパーセントは新バージョンへのトラフィックの割合を指し、時間では次回デプロイまでの時間を指定する
- 指定した時間内でエラーが起こらなければ、全てのトラフィックを新バージョンへ向ける方式
Linearデプロイ設定とは
公式ドキュメント
Linear (リニア): トラフィックは毎回同じ間隔 (分) の等しい増分で移行されます。増分ごとに移行するトラフィックの割合 (%) と、増分間の間隔 (分) を指定する、事前定義済み線形オプションから選択できます。
- 指定したパーセントと時間で段階的に新バージョンへトラフィックを移行する方式
All-at-onceデプロイ設定とは
公式ドキュメント
オール・アット・ワンス: すべてのトラフィックは元の Lambda 関数から、更新された Lambda 関数のバージョンに同時に移行されます。
- デプロイ後、新バージョンへトラフィックを100%移行する方式
なぜつまずいたのか
今回の試験勉強中にCanaryデプロイ設定を初めて知り、指定した時間後にトラフィックが新バージョンへ完全移行するニュアンスに違和感がありました。
個人的には「指定時間経過後に本当に一気に100%まで移行して大丈夫なの!?」というソワソワしましたが、認識齟齬ありませんでした。
最後に
試験勉強中の方や、実務で使われる方の参考になれば幸いです。
以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!